1. Field of the Invention
The present invention relates generally to data communication networks and the transmission of data in those networks. More specifically, it relates to hardware and data encoding modifications for increasing the throughput and error discrimination of data networks.
2. Discussion of Related Art
As the use of data communication networks becomes increasingly widespread, the need for reliable data transmission through nodes in such networks, the Internet being one example, has become more important. In particular, increasing the amount of data that can be sent over an interconnect link between two nodes has always been a goal of data networks. Users expect networks to deliver data faster and at the same time more reliably. One way data can be delivered with higher throughput is ensuring that the payload portion of a data packet is carrying as much actual data as possible; that is, minimizing space taken up by various encoding and CRC bits found in most data packets. These various encoding bits are necessary for ensuring that data is delivered reliably and error-free.
Presently, a significant portion of the payload of a data packet is used for transmitting packet sequence numbers, necessary for ensuring that packets are received in order and that all expected packets are received. FIG. 1 is a block diagram of a single-flit data packet excluding the packet's 11 inversion bits. Thus, only 77 of the 88 bits are shown. A typical single-flit packet has 47 bits available for carrying payload data and 30 bits used for CRC checking used for checking the accuracy of the data sent. Of the 47 bits that can be used for carrying actual data, eight bits are presently being used for transmitting a sequence number for the packet. This leaves only 39 bits, out of an 88-bit data packet for carrying payload data. By eliminating the need to transmit the sequence number data as part of the payload, the payload portion of the packet used for carrying data would increase by approximately 15%; eight extra bits in each packet.
As mentioned, each packet has 11 invert bits, one for each 8-bit word in an 88-bit packet. An invert bit indicates whether its corresponding seven bits should be inverted or left unmodified at the receiver. Thus, if a single invert bit is corrupted during transmission over the link, the seven associated bits at the receiving end are also corrupted, when in fact they were transmitted accurately but “corrupted”at the receiving end because of the incorrect invert bit. However, the CRC check will show that all eight bits are corrupted. The CRC is presently not able to detect an inversion-bit (or 7-bit error) coding error as opposed to a non-invert bit error. As is known in the field, the CRC check is important; if the CRC check matches, the packet can be used, if not, the packet is considered corrupt and is dropped and resent.
Therefore, it would be desirable to increase the bandwidth of a link by utilizing the maximum number of bits in the payload segment of a data packet. This can be done by taking the sequence number of a data packet out of the payload segment and encoding it in the CRC section of a packet. It would also be desirable to have the CRC check convey more information about errors it detects, such as whether a CRC check failure is the result of an out-of-sequence packet (which is not a data transmission error) or is a true data transmission error.